from django.db import models
from utils.models import BaseModel
from itsdangerous import TimedJSONWebSignatureSerializer as Serializer,BadData
from django.conf import settings

class OAuthQQUser(BaseModel):
    """
    QQ登录用户数据
    """
    user = models.ForeignKey('users.User', on_delete=models.CASCADE, verbose_name='用户')
    openid = models.CharField(max_length=64, verbose_name='openid',unique=True, db_index=True)

    class Meta:
        db_table = 'tb_oauth_qq'
        verbose_name = 'QQ登录用户数据'
        verbose_name_plural = verbose_name


    @classmethod
    def generate_save_user_token(cls,openid):

        serializer = Serializer(settings.SECRET_KEY,3600)

        token = serializer.dumps({'openid':openid})

        return token.decode()

    @classmethod
    def check_user_token(cls,token):

        serializer = Serializer(settings.SECRET_KEY, 3600)

        try:
            result = serializer.loads(token)

        except BadData:
            return None
        else:
            openid = result.get('openid')
            return openid
